iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
AI/ ML & Data

From Python Beginner To AI Engineer系列 第 26

內建的字串方法很方便

  • 分享至 

  • xImage
  •  

大小寫

字串有許多實用的方法,例如大小寫轉換:

>>> s = "Hello Kitty"
>>> print(f"全小寫 {s.lower()}")
>>> print(f"全大寫 {s.upper()}")
>>> print(f"大小寫反轉 {s.swapcase()}")
全小寫 hello kitty
全大寫 HELLO KITTY
大小寫反轉 hELLO kITTY

還有可以轉換成首字大寫的方法:

>>> s = "nOt tItlE"
>>> print(f"標題 {s.title()}")
標題 Not Title

判斷

字串也有一些幫忙判斷的方法,假設我們有一個字串列表如下:

arr = [
    "[閒聊] 哥布林生存法則的梗是源自於哪裡啊?",
    "[討論] 鳴人小時候說要當火影的時候三代在想什麼?",
    "[閒聊] 笑戀是不是不會追求自己的感情",
    "[新聞] 台灣票房揭曉!《小丑:雙重瘋狂》奪冠",
    "[閒聊] 比洋德·尼特羅的強度大概多強?",
]

如果要判斷哪些標題屬於「閒聊」,可以使用 .startswith() 方法:

>>> for a in arr:
>>>     if a.startswith("[閒聊]"):
>>>         print(a)
[閒聊] 哥布林生存法則的梗是源自於哪裡啊?
[閒聊] 笑戀是不是不會追求自己的感情
[閒聊] 比洋德·尼特羅的強度大概多強?

.startswith 是用來判斷該字串的開頭是否為指定字串,以此例而言,只要判斷標題是不是 [閒聊] 開頭即可。如果想要知道字串是否以問號結尾,可以使用 .endswith() 方法:

>>> for a in arr:
>>>     if a.endswith("?"):
>>>         print(a)
[閒聊] 哥布林生存法則的梗是源自於哪裡啊?
[討論] 鳴人小時候說要當火影的時候三代在想什麼?
[閒聊] 比洋德·尼特羅的強度大概多強?

取代

使用 .replace() 方法,可以將字串中的某些子字串替換掉:

>>> s = "今天適合出去玩嗎?那得看今天天氣好不好。"
>>> print(s.replace("今天", "明日"))
明日適合出去玩嗎?那得看明日天氣好不好。

.replace("今天", "明日") 會把所有的「今天」都換成「明日」,如果不想要全部換掉,可以再加上一個次數的參數:

>>> s = "今天適合出去玩嗎?那得看今天天氣好不好。"
>>> print(s.replace("今天", "明日", 1))
明日適合出去玩嗎?那得看今天天氣好不好。

改成 .replace("今天", "明日", 1) 就只會把第一個「今天」給換掉。

移除多餘空白

有些時候,我們並不希望字串有多餘的空格,這時可以用 .strip() 類的方法來移除多餘的空白:

>>> s = "  apple   "
>>> print(f"[{s}]")
>>> print(f"[{s.strip()}]")  # 左右空白都移除
>>> print(f"[{s.lstrip()}]")  # 只移除左邊的空白
>>> print(f"[{s.rstrip()}]")  # 只移除右邊的空白
[  apple   ]
[apple]
[apple   ]
[  apple]

但是 .strip() 並不能移除中間的空白:

>>> s = "apple   banana"
>>> print(s.strip())
apple   banana

透過 in 關鍵字可以判斷字串是否包含某個子字串,結合 while.replace() 可以移除中間的空格:

>>> while "  " in s:
>>>     s = s.replace("  ", " ")
>>> print(s)
apple banana

切割與合併

透過 .split() 方法可以把字串切割成列表:

>>> s = "Today is a good day!"
>>> print(s.split())
['Today', 'is', 'a', 'good', 'day!']

變成列表後,每個元素都還是字串,可以各自進行操作:

>>> s = "Today is a good day!"
>>> s = s.split()
>>>
>>> for i, ss in enumerate(s):
>>>     s[i] = ss.title()
>>> s[3] = s[3].upper()
>>>
>>> s
['Today', 'Is', 'A', 'GOOD', 'Day!']

最後可以用 .join() 方法,把列表重新合併成字串:

>>> s = " ".join(s)
>>> print(s)
Today Is A GOOD Day!

.join() 是個特別的方法,被合併的列表是做為參數被傳進方法裡面,而真正用來發動此方法的是空格 " ",代表用空格來串接這些元素,也可以換成其他字串:

>>> print("+".join(s))  # 用加號連接
>>> print("".join(s))  # 不使用任何字串連接
Today+Is+A+GOOD+Day!
TodayIsAGOODDay!

掌握這些字串方法,是文字處理相當重要的基本功。


上一篇
來點更美麗的字串
下一篇
如何統計字詞的出現頻率
系列文
From Python Beginner To AI Engineer31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言